In recent years, the tremendous growth in the computational power of computers has enabled software to become ever more complex. The increasing size and scope of software development projects can lead to situations where software development projects undertaken in one software layer may depend on, be used by, or be used for other software layers. In some situations, development projects may be undertaken in upper software layers in order to enhance functionality in lower software layers. These development projects often depend on access to objects contained in lower software layers, yet because the development projects are undertaken in upper software layers, errors may occur when the development projects attempt to access these objects since the projects and objects are found on different levels.